本文同步發於我的部落格 - https://lajiooh.com/2020/09/18/ithome2020-day3/
在昨天我們提到了 php artisan serve
的問題,需要啟動一個真正的網路伺服器會是比較正確的做法,在今天,我們一起來學學 nginx 以及 Laravel 環境變數的設定吧!
在 Laravel 專案目錄底下會有一個 .env.example
的檔案,我們先以這個檔案作為基礎,去設置適合你專案的環境變數。
cp .env.example .env
由於在公司開發專案時,除了自己本機開發環境外,還有測試用的 Stage,以及正式環境的 Production 主機,因此我會另外複製兩個環境變數的檔案為 .env.stage
、.env.production
,依照不同的使用環境做出不同設定,這樣才不會影響到營運的主機。
我們先執行指令產生網站專屬的密鑰,再打開 Laravel 的 .env 檔案
php artisan key:generate
這個設定檔的開頭會設定專案的名字、Debug 模式是否要開啟等參數。第二個部分是有關資料庫的連接,我們可以透過這個地方將 Laravel 連上已開啟的 MySQL 資料庫。
APP_NAME=laravel-project
APP_ENV=local
APP_KEY=base64:
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=user
DB_PASSWORD=password
nginx 設定可以至 /etc/nginx/site-available/
這個資料夾內的 default
進行設定,通常一台機器內若有架設多個網站,可以利用多個設定檔方便區分不同網域或服務。
sudo vi /etc/nginx/site-available/default
設定方式如下
server {
# listen 設定這個 server 監聽的 port
listen 80;
listen [::]:80;
server_name 127.0.0.1;
# 可將 root 視為一個入口,指到 Laravel 專案資料夾內的 public 資料夾
root /var/www/[Laravel Project Name]/public;
index index.php index.html;
location / {
# 這段的意義代表我們將所有的請求都交給 Laravel 的路由去處理,因此如 404 的頁面都是交由 Laravel 處理
try_files $uri $uri/ /index.php?$query_string;
}
#所有 .php 的檔案交由 php-fpm 去做解析
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
設定完成後,需要將這個設定檔連結至 site-enabled
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
確認 nginx 是否連接成功
sudo nginx -t
得到這個消息後便可重啟 nginx 囉!
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重啟 nginx
sudo service nginx restart
接下來在網址輸入 localhost 就可以直接進入你的 Laravel 專案囉!